package com.jhy.suixianglu.daima20221222;

import java.util.HashMap;

/**
 * 输入：nums = [2,7,11,15], target = 9
 * 输出：[0,1]
 * 解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1]
 * <p>
 * 总结：
 * 为什么想到hash表？
 * 1、每当我们遇到要判断这个元素是否出现过 或者是要判断这个元素是否在这个集合出现过 用hash表来处理
 * 2、这道题的思想：
 * 每次在遍历的时候 都需要判断之前的元素是否出现过 如果出现过就直接去下标存储的值 和当前这个数
 *
 */
public class TwoSum {
    public int[] twoSum(int[] nums, int target) {
        // key 存储元素  value 存放这下标 查找元素是否出现过 所以元素作为key
        HashMap<Integer, Integer> map = new HashMap<>(nums.length);
        for (int i = 0; i < nums.length; i++) {
            int num = target - nums[i];
            if (map.containsKey(num)) {
                return new int[]{i, map.get(num)};
            }
            map.put(nums[i], i);
        }
        return new int[0];
    }
}
